public class Sieb {

	public static void main(String[] args) {
		int N = Integer.parseInt(args[0]);
		int m = 1;
		int primcount = 0;
		boolean[] p = new boolean[m];
		do {
			// size of the sieve
			m = m * 10;
			p = new boolean[m];
			// initialization: no factors found yet
			for (int i = 2; i < m; i++) {
				p[i] = true;
			}
			// i is prime number -> leave p[i] == true
			// mark multiples of i as nonprime
			for (int i = 2; (i * i) < m; i++) {
				if (p[i]) {
					
					for (int n = 2; (n * i) < m; n++) {
						p[n * i] = false;
					}
				}
			}
			// how much primes we have?
			primcount = 0;
			for (int i = 2; i < m; i++) {
				if (p[i]) {
					primcount++;
				}
			}
		} while (primcount < N);
		
		// output
		int c = 0;
		int primtemp = 0;

		do {
			c++;
			if (p[c]) {
				primtemp++;
				System.out.println(c);
			}
		} while (primtemp < N);

	}
}